package sismed.negocio.modelo;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table
@Inheritance(strategy=InheritanceType.JOINED)
public class Exame {
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int id;
	
	private String registro;
	
	@ManyToOne(cascade={ CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH })
	private Medico medico;
	
	@ManyToOne(cascade={ CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH })
	private Paciente paciente;
	
	@ManyToOne(cascade={ CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH })
	private Farmaceutico farmaceutico;
	
	private String leito;
	private String dataSolicitacao;
	private boolean realizado;
	String tipo;
	
	public Exame(){
		this.realizado = false;
		this.tipo = "-1";
	}
	
	public Exame(String cpf, String crm, String crf,
			String indicacaoClinica, String enfermaria, String leito,
			Date dataSolicitacao) {
		
		this.leito = leito;		
		this.dataSolicitacao = dataSolicitacao.toString();
		this.realizado = false;
		this.tipo = "-1";
	}

	
	public Exame( Exame exame ){
		setDataSolicitacao( exame.getDataSolicitacao() );
		setId( exame.getId() );
		setLeito( exame.getLeito() );
		setRealizado( exame.isRealizado() );
		setRegistro( exame.getRegistro() );
		setMedico( exame.getMedico() );
		setFarmaceutico(  exame.getFarmaceutico() );
		setPaciente(  exame.getPaciente() );
		setTipo( exame.tipo );
	}

	public int getId() {
		return id;
	}

	public void setId( int id ) {
		this.id = id;
	}

	public String getRegistro() {
		return registro;
	}

	public void setRegistro(String registro) {
		this.registro = registro;
	}

	public Medico getMedico() {
		return medico;
	}

	public void setMedico( Medico medico) {
		this.medico = medico;
	}

	public Paciente getPaciente() {
		return paciente;
	}

	public void setPaciente( Paciente paciente) {
		this.paciente = paciente;
	}

	public Farmaceutico getFarmaceutico() {
		return farmaceutico;
	}

	public void setFarmaceutico( Farmaceutico farmaceutico) {
		this.farmaceutico = farmaceutico;
	}
	
	public String getLeito() {
		return leito;
	}

	public void setLeito(String leito) {
		this.leito = leito;
	}

	public String getDataSolicitacao() {
		return dataSolicitacao;
	}

	public void setDataSolicitacao(String dataSolicitacao) {
		this.dataSolicitacao = dataSolicitacao;
	}

	public boolean isRealizado() {
		return realizado;
	}

	public void setRealizado(boolean realizado) {
		this.realizado = realizado;
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
}
